home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 351-375 / 359 / dice / dice.lzh / lib / memory / realloc.c < prev    next >
C/C++ Source or Header  |  1990-03-27  |  540b  |  40 lines

  1.  
  2. /*
  3.  *  REALLOC.C
  4.  *
  5.  *  (c)Copyright 1990, Matthew Dillon, All Rights Reserved
  6.  */
  7.  
  8. #include <exec/types.h>
  9. #include <exec/memory.h>
  10. #include <stdlib.h>
  11. #include <errno.h>
  12.  
  13. #define buf ((long *)vbuf)
  14.  
  15. void *
  16. realloc(vbuf, bytes)
  17. void *vbuf;
  18. size_t bytes;
  19. {
  20.     void *ptr = NULL;
  21.     int copy;
  22.  
  23.     if (bytes <= 0 && buf) {
  24.     free(buf);
  25.     return(NULL);
  26.     }
  27.     if (buf) {
  28.     copy = buf[-1] - 8;
  29.     if (bytes <= copy)
  30.         return(buf);
  31.     }
  32.     ptr = malloc(bytes);
  33.     if (buf) {
  34.     movmem(buf, ptr, copy);
  35.     free(buf);
  36.     }
  37.     return(ptr);
  38. }
  39.  
  40.